home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Environments / PowerMacOberon feb96 / Source / Sys.Mod (.txt) < prev    next >
Oberon Text  |  1995-09-19  |  38KB  |  671 lines

  1. Syntax10b.Scn.Fnt
  2. Syntax10.Scn.Fnt
  3. StampElems
  4. Alloc
  5. 19 Sep 95
  6. Syntax10i.Scn.Fnt
  7. Courier10.Scn.Fnt
  8. MODULE Sys;    (*HM/mah/CS 94-06-08 / 
  9. IMPORT Modules, SYSTEM;
  10. CONST
  11.     align68K* = 1;  (** proper alignment for structures to be passed to the MacOS *)
  12.     fsAtMark* = 0; (** Positioning mode: at current position *)
  13.     fsFromStart* = 1; (** Positioning mode: offset relative to beginning of medium *)
  14.     fsFromMark* = 3; (** Positioning mode: offset relative to current position *)
  15.     smSystemScript* = -1;    (** System script code for files*)
  16.     ApplSig* = 2E4F6234H;             (** '.Ob4' *)
  17.     FileSig* = 54455854H;              (** 'TEXT' *)
  18.     fsRdPerm* = 1; (** Access permissoin: request to read *)
  19.     fsRdWrPerm* = 3; (** Access permission: request to read and write *)
  20.     kPowerPCISA* = 1;
  21.     uppVBLProcInfo* = 19802H;    (** register based, 1 input parameter in A0*)
  22.     exceptionProcInfo* = 2H;    (** register based, no parameters*)
  23. (*--- memory manager ---*)
  24.     ProcPtr* = POINTER TO RECORD proc*: PROCEDURE END;
  25.     Str255* = ARRAY 256 OF CHAR;
  26.     Str63* = ARRAY 64 OF CHAR;
  27. (*--- QuickDraw ---*)
  28.     Point*= RECORD [align68K] v*, h*: INTEGER END;
  29.     Point0* = LONGINT;  (*for toolbox calling conventions*)
  30.     Rect*= RECORD [align68K] top*, left*, bottom*, right*: INTEGER END; (*8*)
  31.     Cursor*= RECORD [align68K] data*, mask*: ARRAY 8 OF SET; hotSpot*: Point END;
  32.     RgnHandle*= LONGINT;
  33.     Pattern*= ARRAY 2 OF LONGINT;
  34.     RGBColor*=RECORD [align68K] red*, green*, blue*: INTEGER END;
  35.     BitMapPtr*= LONGINT; (* Should be POINTER TO BitMap; except for GC *)
  36.     BitMapRealPtr*= POINTER TO BitMap;
  37.     BitMap*= RECORD [align68K] (*14*)
  38.         baseAddr*: LONGINT;
  39.         rowBytes*: INTEGER;
  40.         bounds*: Rect
  41.     END;
  42.     PixMapPtr* = LONGINT;   (* should be POINTER TO PixMap except for GC  *)
  43.     PixMapRealPtr* = POINTER TO PixMap;   (* see IM p. V-52 ff. *)
  44.     PixMapHandle* = LONGINT;        (* should be (see below) except for GC *)
  45.     PixMapRealHandle* = POINTER TO RECORD [align68K] p*: PixMapPtr END;
  46.     PixMap* = RECORD [align68K] (BitMap)    
  47.         pmVersion*: INTEGER;
  48.         packType*: INTEGER;
  49.         packSize*: LONGINT;
  50.         hRes*: LONGINT;
  51.         vRes*: LONGINT;
  52.         pixelType*: INTEGER;
  53.         pixelSize*: INTEGER;
  54.         cmpCount*: INTEGER;
  55.         cmpSize*: INTEGER;
  56.         planeBytes*: LONGINT;
  57.         pmTable*: LONGINT;
  58.         pmReserved*: LONGINT
  59.     END;
  60.     PixPatPtr* = LONGINT;  (* should be POINTER TO PixPat except for GC *)
  61.     PixPatRealPtr* = POINTER TO PixPat;   (* see IM p. V-55 ff. *)
  62.     PixPatHandle* = LONGINT;        (* should be (see below) except for GC *)
  63.     PixPatRealHandle* = POINTER TO RECORD [align68K] p*: PixPatPtr END;
  64.     PixPat = RECORD
  65.         patType*: INTEGER;
  66.         patMap*: PixMapHandle;
  67.         patData*: LONGINT;
  68.         patXData*: LONGINT;
  69.         patXValid*: INTEGER;
  70.         patXMap*: LONGINT;
  71.         pat1Data*: Pattern
  72.     END;
  73.     GrafPtr*= LONGINT; (* Should be POINTER TO GrafPort; except for GC *)
  74.     GrafRealPtr*= POINTER TO GrafPort;
  75.     GrafPort*= RECORD [align68K]
  76.         device*: INTEGER; portBits*: BitMap; portRect*: Rect;
  77.         visRgn*, clipRgn*: RgnHandle; bkPat*, fillPat*: Pattern;
  78.         pnLoc*, pnSize*: Point; pnMode*: INTEGER; pnPat*: Pattern; pnVis*: INTEGER;
  79.         txFont*, txFace*, txMode*, txSize*: INTEGER; spExtra*: LONGINT;
  80.         fgColor*, bkColor*: LONGINT; colrBit*: INTEGER;
  81.         patStretch*: INTEGER; picSave*, rgnSave*, polySave*, grafProcs*: LONGINT
  82.     END;
  83.     CGrafPtr* = LONGINT;      (* should be POINTER TO CGrafPort except for GC *)
  84.     CGrafRealPtr* = POINTER TO CGrafPort;      (* see IM p. V-50 ff. *)
  85.     CGrafPort* = RECORD [align68K]
  86.         device*: INTEGER;
  87.         portPixMap*: PixMapHandle;    
  88.         portVersion*: INTEGER;
  89.         grafVars*: LONGINT;
  90.         chExtra*: INTEGER;
  91.         pnLocHFrac*: INTEGER;
  92.         portRect*: Rect;
  93.         visRgn*: RgnHandle;
  94.         clipRgn*: RgnHandle; 
  95.         bkPixPat*: PixPatHandle;
  96.         rgbFgColor*: RGBColor;
  97.         rgbBkColor*: RGBColor;
  98.         pnLoc*: Point;
  99.         pnSize*: Point;
  100.         pnMode*: INTEGER;
  101.         pnPixPat*: PixPatHandle;
  102.         fillPixPat*: PixPatHandle;
  103.         pnVis*: INTEGER;
  104.         txFont*: INTEGER;
  105.         txFace*: INTEGER;
  106.         txMode*: INTEGER;
  107.         txSize*: INTEGER;
  108.         spExtra*: LONGINT;
  109.         fgColor*: LONGINT;
  110.         bkColor*: LONGINT;
  111.         colrBit*: INTEGER;
  112.         patStretch*: INTEGER;
  113.         picSave*: LONGINT;
  114.         rgnSave*: LONGINT;
  115.         polySave*: LONGINT;
  116.         grafProcs*: LONGINT
  117.     END;
  118.     TextStyle*=RECORD [align68K] tsFont*, tsFace*, tsSize*: INTEGER; red*, green*, blue*: INTEGER END;
  119.     TERec*= RECORD [align68K]
  120.         misc0: ARRAY 30 OF INTEGER;
  121.         teLength*: INTEGER; teHandle*: LONGINT;
  122.         misc1: ARRAY 4 OF INTEGER;
  123.         txFont*, txFace*, txMode*, txSize*: INTEGER END;
  124.     TEHandle*= LONGINT; (* Should be POINTER TO TEHandleRec; except for GC *)
  125.     TERealHandle*= POINTER TO TEHandleRec; 
  126.     TEHandleRec*= RECORD [align68K] p*: POINTER TO TERec END;
  127.     TEStyleRec*=RECORD [align68K]
  128.         nRuns*: INTEGER; misc: ARRAY 9 OF INTEGER;
  129.         runs*: ARRAY 8000 OF RECORD [align68K] startChar*, styleIndex*: INTEGER END
  130.         END;
  131.     TEStyleHandle*= LONGINT; (* Should be POINTER TO TEStyleHandleRec; except for GC *)
  132.     TEStyleRealHandle*= POINTER TO TEStyleHandleRec;
  133.     TEStyleHandleRec*= RECORD [align68K] p*: POINTER TO TEStyleRec END;
  134.     FontInfo*= RECORD [align68K] ascent*, descent*, widMax*, leading*: INTEGER END;
  135.     TPrPtr* = LONGINT;
  136.     TPrRealPtr*=POINTER TO RECORD [align68K] x0*: ARRAY 8 OF CHAR; top*, left*, bottom*, right*: INTEGER;
  137.                                                                         x1*: ARRAY 52 OF CHAR;
  138.                                                                         bjdl*: SHORTINT END;    (*more fields follow, size=120 bytes*)
  139.     TPrHnd*=LONGINT;
  140.     TPrRealHnd*=POINTER TO RECORD [align68K] p*: TPrPtr END;
  141.     TPrStatus*=ARRAY 13 OF INTEGER;
  142. (*--- event manager ---*)
  143.     KeyMap* = ARRAY 4 OF SET;
  144.     EventRecord*=RECORD [align68K]
  145.         what*: INTEGER; message*, when*: LONGINT; where*: Point; modifiers*: INTEGER
  146.     END;
  147. (*--- file manager ---*)
  148.     FSSpecPtr* = POINTER TO FSSpec;
  149.     FSSpec* = RECORD [align68K]
  150.         vRefNum*: INTEGER; (* volume reference number *)
  151.         parID*: LONGINT; (* directory ID of parent directory *)
  152.         name*: Str63 (* filename or directory name *)
  153.     END;
  154.     FInfo* = RECORD [align68K]
  155.         fdType*, fdCreator*: LONGINT;
  156.         fdFlags*, fdLocV*, fdLocH*, fdFldr*: INTEGER
  157.     END;
  158.     DInfo* = RECORD [align68K]
  159.         frRect*: Rect; (* folder's rectangle *)
  160.         frFlags*: INTEGER; (* flags *)
  161.         frLocation*: Point; (* folder's location *)
  162.         frView*: INTEGER (* folder's view *)
  163.     END;
  164.     DXInfo* = RECORD [align68K]
  165.         frScroll*: Point; (* scroll position *)
  166.         frOpenChain*: LONGINT; (* directory ID chain of open folders *)
  167.         frUnused: INTEGER;
  168.         frComment*: INTEGER; (* comment ID *)
  169.         frPutAway*: LONGINT; (* directory ID *)
  170.     END;
  171.     FXInfo* = RECORD [align68K]
  172.         fdIconID*: INTEGER; (* icon ID *)
  173.         fdUnused: ARRAY 4 OF INTEGER;
  174.         fdComment*: INTEGER; (* comment ID *)
  175.         fdPutAway*: LONGINT; (* home directory ID *)
  176.     END;
  177.     ParmBlkPtr* = POINTER TO ParmBlkRec;
  178.     ParmBlkRec* = RECORD [align68K] (*24*)
  179.         qLink*: LONGINT; (* next queue entry *)
  180.         qType*: INTEGER; (* queue type *)
  181.         ioTrap*: INTEGER; (* routine trap *)
  182.         ioCmdAddr*: LONGINT; (* routine address *)
  183.         ioCompletion*: LONGINT; (* pointer to completion routine *)
  184.         ioResult*: INTEGER; (* result code *)
  185.         ioNamePtr*: LONGINT; (* pointer to pathname *)
  186.         ioVRefNum*: INTEGER (* volume specification *)
  187.     END;
  188.     ParmBlkFilePtr* = POINTER TO ParmBlkFile;
  189.     ParmBlkFile* = RECORD (ParmBlkRec)
  190.         ioFRefNum*: INTEGER; (* file reference number *)
  191.         ioFVersNum*: SHORTINT; (* (unused) file version number (should always be 0) *)
  192.         ioFDirIndex*: INTEGER; (* directory index, used with PBHGetFInfo *)
  193.         ioFlAttrib*, ioFlVersNum*: SHORTINT; (* file attributes (unused) file version number (must always be 0) *)
  194.         ioFlFndrInfo*: FInfo; (* information used by the Finder *)
  195.         ioFlNum*: LONGINT; (* file ID *)
  196.         ioFlStBlk*: INTEGER; (* first allocation block of data fork, 0 if the data fork is empty *)
  197.         ioFlLgLen*, ioFIPyLen*: LONGINT; (* logical and physical EOF of data fork *)
  198.         ioFlRStBlk*: INTEGER; (* first allocation block of resource fork, 0 if the data fork is empty *)
  199.         ioFlRLgLen*, ioFlRPyLen*: LONGINT; (* logical and physical EOF of resource fork *)
  200.         ioFlCrDat*, ioFlMdDat*: LONGINT (* data and time of creation and last modification in seconds since midnight January 1, 1904 *)
  201.     END;
  202.     CInfoPBPtr* = POINTER TO CInfoPBRec;
  203.     CInfoPBRec* = RECORD (ParmBlkRec)
  204.         ioFRefNum*: INTEGER; (* file reference number *)
  205.         ioFVersNum*: SHORTINT; (* version number *)
  206.         filler1: SHORTINT;
  207.         ioFDirIndex*: INTEGER; (* directory index *)
  208.         ioFlAttrib*: SHORTINT; (* file or directory attributes *)
  209.         ioACUser*: SHORTINT; (* directory access rights *)
  210.     END;
  211.     CInfoPBFilePtr* = POINTER TO CInfoPBFileRec;
  212.     CInfoPBFileRec* = RECORD (CInfoPBRec)
  213.         ioFlFndrInfo*: FInfo; (* information used by the Finder *)
  214.         ioDirID*: LONGINT; (* directory ID or file ID *)
  215.         ioFlStBlk*: INTEGER; (* first allocation block of data fork *)
  216.         ioFlLgLen*, ioFlPyLen*: LONGINT; (* logical and physical EOF of data fork *)
  217.         ioFlRStBlk*: INTEGER; (* first allocation block of resource fork, 0 if the data fork is empty *)
  218.         ioFlRLgLen*, ioFlRPyLen*: LONGINT; (* logical and physical EOF of resource fork *)
  219.         ioFlCrDat*, ioFlMdDat*: LONGINT; (* data and time of creation and last modification in seconds since midnight January 1, 1904 *)
  220.         ioFlBkDat*: LONGINT; (* data and time of last backup *)
  221.         ioFlXFndrInfo*: FXInfo; (* additional Finder information *)
  222.         ioFlParID*: LONGINT; (* file parent directory ID *)
  223.         ioFlClpSiz*: LONGINT (* file's clump size *)
  224.     END;
  225. (*--- window manager ---*)
  226.     WindowPtr*= LONGINT; (* Should be POINTER TO WindowPort except for GC *)
  227.     WindowRealPtr*= POINTER TO WindowPort;
  228.     WindowPort*= RECORD (GrafPort)
  229.         windowKind*: INTEGER; visible*, hilited*, goAwayFlag*, spareFlag*: BOOLEAN;
  230.         winMisc*: ARRAY 19 OF INTEGER; refCon*: LONGINT
  231.     END;
  232. (*--- mixed mode manager ---*)
  233.     UniversalProcPtr* = POINTER TO RoutineDescriptor;
  234.     RoutineDescriptor* = RECORD [align68K]
  235.         goMixedModeTrap*: INTEGER;
  236.         version*, flags*: SHORTINT;
  237.         reserved1*: LONGINT;
  238.         reserved2*, selectorInfo*: SHORTINT;
  239.         count*: INTEGER;
  240.         procInfo*: LONGINT;
  241.         reserved3*, ISA*: SHORTINT;
  242.         routineFlags*: INTEGER;
  243.         proc*: ProcPtr;
  244.         reserved4*, selector*: LONGINT
  245.     END;
  246. (*--- exception manager ---*)
  247.     ExceptionInfo* = POINTER TO ExceptionInfoDesc;
  248.     ExceptionInfoDesc* = RECORD [align68K]
  249.         kind*: LONGINT;
  250.         spec*: POINTER TO RECORD [align68K]
  251.                 dummy0, CTR*, dummy1, LR*, dummy2, PC*, CR*, XER*, MSR*: LONGINT
  252.             END;
  253.         reg*: POINTER TO RECORD [align68K]
  254.                 R*: ARRAY 64 OF LONGINT    (** reg i = R[2*i+1]*)
  255.             END;
  256.         fp*: POINTER TO RECORD [align68K]
  257.                 R*: ARRAY 64 OF LONGINT;    (** reg i = R[2*i]*)
  258.                 FPSCR*: LONGINT
  259.             END;
  260.         mem*: POINTER TO RECORD [align68K]
  261.                 area*, adr*, error*, refKind*: LONGINT
  262.             END
  263.     END;
  264.     ExceptionHandler* = PROCEDURE (context: ExceptionInfo): LONGINT;
  265. (*--- vertical retrace manager ---*)
  266.     VBLTask* = POINTER TO VBLTaskDesc;
  267.     VBLTaskDesc* = RECORD [align68K]
  268.         qLink*: LONGINT; (* should be VBLTask *)
  269.         qType*: INTEGER;
  270.         vblAddr*: LONGINT; (* should be UniversalProcPtr *)
  271.         vblCount*, vblPhase*: INTEGER
  272.     END;
  273. (*--- OS utilities ---*)
  274.     DateTimeRec* = RECORD [align68K]
  275.         year*, month*, day*, hour*, minute*, second*, dayOfWeek*: INTEGER
  276.     END;
  277. (*--- menu manager ---*)
  278.     MBarHnd*= LONGINT;
  279.     MenuHandle*= LONGINT;
  280.     done*, n*: LONGINT;
  281.     interfaceLib: LONGINT;
  282. (*--- print manager ---*)
  283.     PrGeneral*: PROCEDURE (pData: LONGINT);
  284.     PrError*: PROCEDURE () : INTEGER;
  285.     PrOpen*: PROCEDURE;
  286.     PrValidate*: PROCEDURE (hPrint: TPrHnd) : BOOLEAN;
  287.     PrintDefault*: PROCEDURE (hPrint: TPrHnd);
  288.     PrStlDialog*: PROCEDURE (hPrint: TPrHnd) : BOOLEAN;
  289.     PrJobDialog*: PROCEDURE (hPrint: TPrHnd) : BOOLEAN;
  290.     PrOpenDoc*: PROCEDURE (hPrint: TPrHnd; pPrPort, pIOBuf: LONGINT) : GrafPtr;
  291.     PrCloseDoc*: PROCEDURE (pPrPort: GrafPtr);
  292.     PrClose*: PROCEDURE;
  293.     PrOpenPage*: PROCEDURE (pPrPort: GrafPtr; pPageFrame: LONGINT); 
  294.     PrClosePage*: PROCEDURE (pPrPort: GrafPtr); 
  295.     PrPicFile*: PROCEDURE (hPrint: TPrHnd; pPrPort, pIOBuf, pDevBuf: LONGINT; VAR prStatus: TPrStatus);
  296. (*--- event manager ---*)
  297.     GetKeys*: PROCEDURE (VAR keys: KeyMap);
  298.     WaitNextEvent*: PROCEDURE (mask: INTEGER; event: EventRecord; sleep, mouseRgn: LONGINT) : BOOLEAN;
  299.     GetNextEvent*: PROCEDURE (mask: INTEGER; event: EventRecord) : BOOLEAN;
  300.     SystemClick*: PROCEDURE (theEvent: EventRecord; theWindow: WindowPtr);
  301.     Button*: PROCEDURE () : BOOLEAN;
  302.     GetMouse*: PROCEDURE (mouseLoc: Point);
  303.     FlushEvents*: PROCEDURE (whichMask, stopMask: INTEGER);
  304.     TickCount*: PROCEDURE () : LONGINT;
  305. (*--- exception manager ---*)
  306.     InstallExcHandler*: PROCEDURE (new: ProcPtr): ProcPtr;
  307. (*--- file manager ---*)
  308.     PBHGetFInfo*: PROCEDURE (parm: ParmBlkPtr);
  309.     FSpOpenDF*: PROCEDURE (spec: FSSpec; permission: SHORTINT; VAR refNum: INTEGER): INTEGER;
  310.     FSpOpenRF*: PROCEDURE (spec: FSSpec; permission: SHORTINT; VAR refNum: INTEGER): INTEGER;
  311.     FSpCreate*: PROCEDURE (spec: FSSpec; creator: LONGINT; fileType: LONGINT; scriptTag: INTEGER): INTEGER;
  312.     FSpDirCreate*: PROCEDURE (spec: FSSpec; scriptTag: INTEGER; VAR createdDirID: LONGINT): INTEGER;
  313.     FSpDelete*: PROCEDURE (spec: FSSpec): INTEGER; 
  314.     FSpGetFInfo*: PROCEDURE (spec: FSSpec; fndrInfo: FInfo): INTEGER;
  315.     FSpSetFInfo*: PROCEDURE (spec: FSSpec; fndrInfo: FInfo): INTEGER;
  316.     FSpRename*: PROCEDURE (spec: FSSpec; newName: Str255): INTEGER;
  317.     FSpCatMove*: PROCEDURE (source: FSSpec; dest: FSSpec): INTEGER;
  318.     FSMakeFSSpec*: PROCEDURE (vRefNum: INTEGER; dirID: LONGINT; fileName: Str255; spec: FSSpec): INTEGER;
  319.     FSRead*: PROCEDURE (refNum: INTEGER; VAR count: LONGINT; buffPtr: LONGINT): INTEGER;
  320.     FSWrite*: PROCEDURE (refNum: INTEGER; VAR count: LONGINT; buffPtr: LONGINT): INTEGER;
  321.     FSClose*: PROCEDURE (refNum: INTEGER): INTEGER;
  322.     GetEOF*: PROCEDURE (refNum: INTEGER; VAR logEOF: LONGINT): INTEGER;
  323.     SetEOF*: PROCEDURE (refNum: INTEGER; logEOF: LONGINT): INTEGER;
  324.     GetFPos*: PROCEDURE (refNum: INTEGER; VAR filePos: LONGINT): INTEGER;
  325.     SetFPos*: PROCEDURE (refNum: INTEGER; posMode: INTEGER; posOff: LONGINT): INTEGER;
  326.     Allocate*: PROCEDURE (refNum: INTEGER; VAR count: LONGINT): INTEGER;
  327.     HGetVol*: PROCEDURE (volName: LONGINT; VAR vRefNum: INTEGER; VAR dirID: LONGINT): INTEGER;
  328.     HSetVol*: PROCEDURE (volName: LONGINT; vRefNum: INTEGER; dirID: LONGINT): INTEGER;
  329.     FlushVol*: PROCEDURE (volName: LONGINT; vRefNum: INTEGER): INTEGER;
  330.     UnmountVol*: PROCEDURE (volName: LONGINT; vRefNum: INTEGER): INTEGER;
  331.     Eject*: PROCEDURE (volName: LONGINT; vRefNum: INTEGER): INTEGER;
  332.     PBGetCatInfo*: PROCEDURE (parm: CInfoPBPtr): INTEGER;
  333. (*--- memory manager ---*)
  334.     DisposePtr*: PROCEDURE (p: LONGINT);
  335.     FreeMem*: PROCEDURE (): LONGINT;
  336.     GetApplLimit*: PROCEDURE (): LONGINT;
  337.     HLock*: PROCEDURE (handle: LONGINT);
  338.     HUnlock*: PROCEDURE (handle: LONGINT);
  339.     MaxApplZone*: PROCEDURE;
  340.     MaxMem*: PROCEDURE(VAR grow: LONGINT): LONGINT;
  341.     MemError*: PROCEDURE (): INTEGER;
  342.     NewPtr*: PROCEDURE (size: LONGINT): LONGINT;
  343.     NewPtrClear*: PROCEDURE (size: LONGINT): LONGINT;
  344.     SetApplLimit*: PROCEDURE (adr: LONGINT);
  345.     SetPtrSize*: PROCEDURE (p, newSize: LONGINT);
  346.     StackSpace*: PROCEDURE (): LONGINT;
  347.     TopMem*: PROCEDURE (): LONGINT;
  348.     NewHandle*: PROCEDURE (byteCount: LONGINT) : TPrHnd;
  349. (*--- menu manager ---*)
  350.     AddResMenu*: PROCEDURE (theMenu: MenuHandle; theType: LONGINT);
  351.     ClearMenuBar*: PROCEDURE ();
  352.     DrawMenuBar*: PROCEDURE ();
  353.     GetItem*: PROCEDURE (theMenu: MenuHandle; item: INTEGER; VAR itemString: Str255);
  354.     GetMenu*: PROCEDURE (resourceID: INTEGER) : MenuHandle;
  355.     GetMBarHeight*: PROCEDURE(): INTEGER;
  356.     GetMHandle*: PROCEDURE (menuID: INTEGER): MenuHandle;
  357.     GetNewMBar*: PROCEDURE (menuBarID: INTEGER) : MBarHnd;
  358.     HiliteMenu*: PROCEDURE (menuID: INTEGER);
  359.     InitMenus*: PROCEDURE ();
  360.     MenuSelect*: PROCEDURE (startPt: Point0) : LONGINT;
  361.     MenuKey*: PROCEDURE (ch : INTEGER) : LONGINT;
  362.     SetMenuBar*: PROCEDURE (menuList: MBarHnd);
  363. (*--- mixed mode manager ---*)
  364.     DisposeRoutineDesc*: PROCEDURE (upp: UniversalProcPtr);
  365.     NewRoutineDesc*: PROCEDURE (procAdr, procInfo: LONGINT; isa: SHORTINT): UniversalProcPtr;
  366. (*--- OS utilities ---*)
  367.     GetNamedResource*: PROCEDURE (theType: LONGINT; name: Str255) : LONGINT;
  368.     SecondsToDate*: PROCEDURE (secs: LONGINT; td: DateTimeRec);
  369.     GetDateTime*: PROCEDURE  (VAR secs: LONGINT);
  370.     SetDateTime*: PROCEDURE (secs: LONGINT);
  371.     DateToSeconds*: PROCEDURE (td: DateTimeRec; VAR secs: LONGINT);
  372.     SysBeep*: PROCEDURE (duration: INTEGER);
  373.     OpenResFile*: PROCEDURE (fileName: Str255) : INTEGER;
  374.     ResError*: PROCEDURE () : INTEGER;
  375.     ExitToShell*: PROCEDURE;
  376. (*--- QuickDraw ---*)
  377.     CopyBits*: PROCEDURE (srcBits, dstBits: BitMap; srcRect, dstRect: Rect; mode: INTEGER; maskRgn: LONGINT);
  378.     CopyBits2*: PROCEDURE (srcBits, dstBits: PixMap; srcRect, dstRect: Rect; mode: INTEGER; maskRgn: LONGINT);
  379.     DrawChar*: PROCEDURE (ord : INTEGER);
  380.     DrawText*: PROCEDURE (textbuf: LONGINT; firstByte, byteCount: INTEGER);
  381.     ForeColor*: PROCEDURE (color: LONGINT);
  382.     FrameOval*: PROCEDURE (r: Rect);
  383.     HideCursor*: PROCEDURE ();
  384.     Lin*: PROCEDURE (h, v: INTEGER);
  385.     LineTo*: PROCEDURE (h, v: INTEGER);
  386.     MoveTo*: PROCEDURE (h, v: INTEGER);
  387.     PaintRect*: PROCEDURE (r: Rect);
  388.     PenMode*: PROCEDURE (mode: INTEGER);
  389.     PenPat*: PROCEDURE (pat : Pattern);
  390.     PmForeColor*: PROCEDURE (dstEntry: INTEGER);
  391.     SetClip*: PROCEDURE (clip: RgnHandle);
  392.     SetCurs*: PROCEDURE (cursor: Cursor);
  393.     SetPort*: PROCEDURE (port: GrafPort);
  394.     ShowCursor*: PROCEDURE ();
  395.     TextFont*: PROCEDURE (font: INTEGER);
  396.     TextFace*: PROCEDURE (face: INTEGER);
  397.     TextMode*: PROCEDURE (fmode : INTEGER);
  398.     TextSize*: PROCEDURE (size: INTEGER);
  399.     SetRectRgn*: PROCEDURE (rgn: RgnHandle; left, top, right, bottom: INTEGER);
  400.     OpenPort*: PROCEDURE (port: GrafPort);
  401.     RectRgn*: PROCEDURE (rgn: RgnHandle; r: Rect);
  402.     AnimateEntry*: PROCEDURE (dstWindow: WindowPtr; dstEntry: INTEGER; scrRGB: RGBColor);
  403.     CharWidth*: PROCEDURE (ch: INTEGER) : INTEGER;
  404.     GetFontInf*: PROCEDURE (info: FontInfo);
  405.     NewRgn*: PROCEDURE () : RgnHandle;
  406.     InitGraf*: PROCEDURE (VAR thePort: GrafPtr);
  407.     InitCursor*: PROCEDURE ();
  408.     CloseCPort*: PROCEDURE (port:CGrafPort);
  409.     OpenCPort*: PROCEDURE (port:CGrafPort);
  410.     GetPalette*: PROCEDURE (win: WindowPtr) : LONGINT;
  411.     SetPalette*: PROCEDURE (win: WindowPtr; pal : LONGINT; update : BOOLEAN);
  412.     ActivatePalette*: PROCEDURE (win: WindowPtr);
  413.     GetNewPalette*: PROCEDURE (id : INTEGER):LONGINT;
  414.     SetEntryColor*: PROCEDURE (pal : LONGINT; idx : INTEGER; rgb :  RGBColor);
  415. (*--- text mamager ---*)
  416.     TEStylNew*: PROCEDURE (destRect, viewRect: Rect) : TEHandle;
  417.     TEStylPaste*: PROCEDURE (hTE: TEHandle);
  418.     TEGetStylHandle*: PROCEDURE (hTE: TEHandle) : TEStyleHandle;
  419.     TEGetStyle*: PROCEDURE (off: INTEGER; styl: TextStyle; VAR lh, fa: INTEGER; hTE: TEHandle);
  420.     TESetSelect*: PROCEDURE (selStart, selEnd: LONGINT; hTE: TEHandle);
  421.     TEInsert*: PROCEDURE (textAdr: LONGINT; length: LONGINT; hTE: TEHandle);
  422.     TEDelete*: PROCEDURE (hTE: TEHandle);
  423.     TESetStyle*: PROCEDURE (mode: INTEGER; newStyle: TextStyle; redraw: BOOLEAN; hTE: TEHandle);
  424.     TECut*: PROCEDURE (hTE: TEHandle);
  425.     GetFontNam*: PROCEDURE (fontNum: INTEGER; VAR theName: Str255);
  426.     GetFNum*: PROCEDURE (fontName: Str255; VAR theNum: INTEGER);
  427.     InitFonts*: PROCEDURE ();
  428.     TEInit*: PROCEDURE ();
  429.     SetFScaleDisable*: PROCEDURE (fontScaleDisable: BOOLEAN);
  430. (*--- window manager ---*)
  431.     BeginUpdate*: PROCEDURE (theWindow: GrafPort);
  432.     BeginUpdate1*: PROCEDURE (theWindowMsg: LONGINT);
  433.     EndUpdate*: PROCEDURE (theWindow: GrafPort);
  434.     EndUpdate1*: PROCEDURE (theWindowMsg: LONGINT);
  435.     SelectWindow*: PROCEDURE (theWindow: GrafPort);
  436.     SelectWindow1*: PROCEDURE (theWindowPtr: WindowPtr);
  437.     ShowWindow*: PROCEDURE (theWindow: GrafPort);
  438.     HideWindow*: PROCEDURE (theWindow: GrafPort);
  439.     Alert*: PROCEDURE (alertID: INTEGER; filterProc: LONGINT) : INTEGER;
  440.     OpenDeskAcc*: PROCEDURE (theAcc: Str255) : INTEGER;
  441.     FrontWindow*: PROCEDURE () : WindowPtr;
  442.     FindWindow*: PROCEDURE (thePoint: Point0; VAR theWindow: WindowPtr) : INTEGER;
  443.     CloseWindow*: PROCEDURE (thewindow: WindowPtr);
  444.     DragWindow*: PROCEDURE (theWindow: WindowPtr; startPt: Point0; boundsRect: Rect);
  445.     NewCWindow*: PROCEDURE (stor: WindowPort; bnds: Rect; tit: Str255; vis: BOOLEAN; def: INTEGER; bh: LONGINT;
  446.                                                 gaw: BOOLEAN; rc: LONGINT) : WindowPtr;
  447.     InitWindows*: PROCEDURE ();
  448.     InitDialogs*: PROCEDURE (restartProc: LONGINT);
  449.     SetWTitle*: PROCEDURE (theWindow: GrafPtr; title: Str255);
  450. (*--- vertical retrace manager ---*)
  451.     VInstall*: PROCEDURE (task: VBLTask): INTEGER;
  452.     PROCEDURE AllocBlock* (VAR adr: LONGINT; size: LONGINT);
  453.     BEGIN
  454.         IF size < 0 THEN 
  455.             adr := NewPtrClear(-size)    
  456.         ELSE    
  457.             adr := NewPtr(size)
  458.         END
  459.     END AllocBlock;
  460. (*    PROCEDURE AdjustBlock*(adr, newSize: LONGINT);
  461.     BEGIN    
  462. (*TD        SYS.PUTREG(8, adr); SYS.PUTREG(0, newSize); 
  463.         SetPtrSize; TPNE20
  464.     END AdjustBlock; *)
  465.     PROCEDURE DeAllocBlock*(adr: LONGINT);
  466.     BEGIN    
  467.         DisposePtr (adr);
  468.     END DeAllocBlock;
  469.     PROCEDURE Assign* (sym: ARRAY OF CHAR; adr: LONGINT);
  470.         VAR from, to: ProcPtr; a: LONGINT;
  471.     BEGIN
  472.         a := Modules.ThisSym(interfaceLib, sym);
  473.         IF a # 0 THEN
  474.             from := SYSTEM.VAL(ProcPtr, a);
  475.             to := SYSTEM.VAL(ProcPtr, adr);
  476.             to.proc := from.proc
  477.         ELSE done := n;
  478.             Modules.Print("--- Sys could not find ", 0); Modules.Print(sym, 0); Modules.Print(" $", 0)
  479.         END;
  480.         INC(n)
  481.     END Assign;
  482.     PROCEDURE ConvertTime* (secs: LONGINT; VAR t, d: LONGINT);
  483.         VAR td: DateTimeRec;
  484.     BEGIN    
  485.         SecondsToDate(secs, td);
  486.         d:=LONG(td.year MOD 100)*512+td.month*32+td.day; t:=LONG(td.hour)*4096+td.minute*64+td.second
  487.     END ConvertTime;
  488.     PROCEDURE SetClock* (t, d: LONGINT);
  489.         VAR td: DateTimeRec; secs: LONGINT;
  490.     BEGIN
  491.         td.year:=SHORT(d DIV 512 MOD 100)+1900; td.month:=SHORT(d DIV 32 MOD 16); td.day:=SHORT(d MOD 32);
  492.         td.hour:=SHORT(t DIV 2048 MOD 32); td.minute:=SHORT(t DIV 32 MOD 64); td.second:=SHORT (t MOD 32*2);
  493.         DateToSeconds (td, secs); SetDateTime (secs);
  494.     END SetClock;
  495.     PROCEDURE UPP* (procAdr, procInfo: LONGINT): UniversalProcPtr;
  496.     BEGIN
  497.         RETURN NewRoutineDesc(procAdr, procInfo, kPowerPCISA)
  498.     END UPP;
  499.     PROCEDURE InstallExceptionHandler* (new: ExceptionHandler): ExceptionHandler;
  500.         VAR pp, pp1: ProcPtr;
  501.     BEGIN
  502.         pp := SYSTEM.VAL(ProcPtr, NewPtr(8));
  503.         pp1 := SYSTEM.VAL(ProcPtr, SYSTEM.ADR(new));
  504.         pp.proc := pp1.proc;
  505.         pp1 := InstallExcHandler(pp);
  506.         IF pp1 = NIL THEN RETURN NIL ELSE RETURN SYSTEM.VAL(ExceptionHandler, pp1.proc) END
  507.     END InstallExceptionHandler;
  508. BEGIN
  509.     done := 0; n := 0;
  510.     interfaceLib := Modules.ThisLib("InterfaceLib", TRUE);
  511.     Assign("PrGeneral", SYSTEM.ADR(PrGeneral));
  512.     Assign("PrError", SYSTEM.ADR(PrError));
  513.     Assign("PrOpen", SYSTEM.ADR(PrOpen));
  514.     Assign("PrValidate", SYSTEM.ADR(PrValidate));
  515.     Assign("PrintDefault", SYSTEM.ADR(PrintDefault));
  516.     Assign("PrStlDialog", SYSTEM.ADR(PrStlDialog));
  517.     Assign("PrJobDialog", SYSTEM.ADR(PrJobDialog));
  518.     Assign("PrOpenDoc", SYSTEM.ADR(PrOpenDoc));
  519.     Assign("PrCloseDoc", SYSTEM.ADR(PrCloseDoc));
  520.     Assign("PrClose", SYSTEM.ADR(PrClose));
  521.     Assign("PrOpenPage", SYSTEM.ADR(PrOpenPage));
  522.     Assign("PrClosePage", SYSTEM.ADR(PrClosePage));
  523.     Assign("PrPicFile", SYSTEM.ADR(PrPicFile));
  524.     Assign("SysBeep", SYSTEM.ADR(SysBeep));
  525.     Assign("PBHGetFInfoSync", SYSTEM.ADR(PBHGetFInfo));
  526.     Assign("FSpOpenDF", SYSTEM.ADR(FSpOpenDF));
  527.     Assign("FSpOpenRF", SYSTEM.ADR(FSpOpenRF));
  528.     Assign("FSMakeFSSpec", SYSTEM.ADR(FSMakeFSSpec));
  529.     Assign("FSClose", SYSTEM.ADR(FSClose));
  530.     Assign("FSRead", SYSTEM.ADR(FSRead));
  531.     Assign("FSWrite", SYSTEM.ADR(FSWrite));
  532.     Assign("FSpCreate", SYSTEM.ADR(FSpCreate));
  533.     Assign("FSpDirCreate", SYSTEM.ADR(FSpDirCreate));
  534.     Assign("FSpDelete", SYSTEM.ADR(FSpDelete));
  535.     Assign("FSpRename", SYSTEM.ADR(FSpRename));
  536.     Assign("FSpCatMove", SYSTEM.ADR(FSpCatMove));
  537.     Assign("FSpGetFInfo", SYSTEM.ADR(FSpGetFInfo));
  538.     Assign("FSpSetFInfo", SYSTEM.ADR(FSpSetFInfo));
  539.     Assign("GetEOF", SYSTEM.ADR(GetEOF));
  540.     Assign("SetEOF", SYSTEM.ADR(SetEOF));
  541.     Assign("GetFPos", SYSTEM.ADR(GetFPos));
  542.     Assign("SetFPos", SYSTEM.ADR(SetFPos));
  543.     Assign("Allocate", SYSTEM.ADR(Allocate));
  544.     Assign("HGetVol", SYSTEM.ADR(HGetVol));
  545.     Assign("HSetVol", SYSTEM.ADR(HSetVol));
  546.     Assign("FlushVol", SYSTEM.ADR(FlushVol));
  547.     Assign("UnmountVol", SYSTEM.ADR(UnmountVol));
  548.     Assign("Eject", SYSTEM.ADR(Eject));
  549.     Assign("PBGetCatInfoSync", SYSTEM.ADR(PBGetCatInfo));
  550.     Assign("SecondsToDate", SYSTEM.ADR(SecondsToDate));
  551.     Assign("GetDateTime", SYSTEM.ADR(GetDateTime));
  552.     Assign("SetDateTime", SYSTEM.ADR(SetDateTime));
  553.     Assign("DateToSeconds", SYSTEM.ADR(DateToSeconds));
  554.     Assign ("FlushEvents", SYSTEM.ADR (FlushEvents));
  555.     Assign ("WaitNextEvent", SYSTEM.ADR (WaitNextEvent));
  556.     Assign ("GetNextEvent", SYSTEM.ADR (GetNextEvent));
  557.     Assign ("SystemClick", SYSTEM.ADR (SystemClick));
  558.     Assign ("Button", SYSTEM.ADR (Button));
  559.     Assign ("GetMouse", SYSTEM.ADR (GetMouse));
  560.     Assign ("TickCount", SYSTEM.ADR (TickCount));
  561.     Assign ("SetPort", SYSTEM.ADR (SetPort));
  562.     Assign ("BeginUpdate", SYSTEM.ADR (BeginUpdate));
  563.     Assign ("BeginUpdate", SYSTEM.ADR (BeginUpdate1));
  564.     Assign ("EndUpdate", SYSTEM.ADR (EndUpdate));
  565.     Assign ("EndUpdate", SYSTEM.ADR (EndUpdate1));
  566.     Assign ("SelectWindow", SYSTEM.ADR (SelectWindow));
  567.     Assign ("SelectWindow", SYSTEM.ADR (SelectWindow1));
  568.     Assign ("ShowWindow", SYSTEM.ADR (ShowWindow));
  569.     Assign ("HideWindow", SYSTEM.ADR (HideWindow));
  570.     Assign ("SetCursor", SYSTEM.ADR (SetCurs));
  571.     Assign ("HideCursor", SYSTEM.ADR (HideCursor));
  572.     Assign ("ShowCursor", SYSTEM.ADR (ShowCursor));
  573.     Assign ("NewCWindow", SYSTEM.ADR (NewCWindow));
  574.     Assign ("InitWindows", SYSTEM.ADR (InitWindows));
  575.     Assign ("InitDialogs", SYSTEM.ADR (InitDialogs));
  576.     Assign ("Alert", SYSTEM.ADR (Alert));
  577.     Assign ("GetNamedResource", SYSTEM.ADR (GetNamedResource));
  578.     Assign ("OpenResFile", SYSTEM.ADR (OpenResFile));
  579.     Assign ("ResError", SYSTEM.ADR (ResError));
  580.     Assign ("OpenDeskAcc", SYSTEM.ADR (OpenDeskAcc));
  581.     Assign ("FrontWindow", SYSTEM.ADR (FrontWindow));
  582.     Assign ("FindWindow", SYSTEM.ADR (FindWindow));
  583.     Assign ("CloseWindow", SYSTEM.ADR (CloseWindow));
  584.     Assign ("DragWindow", SYSTEM.ADR (DragWindow));
  585.     Assign ("SetWTitle", SYSTEM.ADR (SetWTitle));
  586.     Assign ("SetMenuBar", SYSTEM.ADR (SetMenuBar));
  587.     Assign ("DrawMenuBar", SYSTEM.ADR (DrawMenuBar));
  588.     Assign ("AppendResMenu", SYSTEM.ADR (AddResMenu));
  589.     Assign ("ClearMenuBar", SYSTEM.ADR (ClearMenuBar));
  590.     Assign ("GetNewMBar", SYSTEM.ADR (GetNewMBar));
  591.     Assign ("GetMenu", SYSTEM.ADR (GetMenu));
  592.     Assign ("InitMenus", SYSTEM.ADR (InitMenus));
  593.     Assign ("GetMBarHeight", SYSTEM.ADR (GetMBarHeight));
  594.     Assign ("GetMenuHandle", SYSTEM.ADR (GetMHandle));
  595.     Assign ("GetMenuItemText", SYSTEM.ADR (GetItem));
  596.     Assign ("HiliteMenu", SYSTEM.ADR (HiliteMenu));
  597.     Assign ("MenuSelect", SYSTEM.ADR (MenuSelect));
  598.     Assign ("MenuKey", SYSTEM.ADR (MenuKey));
  599.     Assign ("InitFonts", SYSTEM.ADR (InitFonts));
  600.     Assign ("TEInit", SYSTEM.ADR (TEInit));
  601.     Assign ("SetFScaleDisable", SYSTEM.ADR (SetFScaleDisable));
  602.     Assign ("GetFontName", SYSTEM.ADR (GetFontNam));
  603.     Assign ("GetFNum", SYSTEM.ADR (GetFNum));
  604.     Assign ("TEStyleNew", SYSTEM.ADR (TEStylNew));
  605.     Assign ("TEStylePaste", SYSTEM.ADR (TEStylPaste));
  606.     Assign ("TEGetStyleHandle", SYSTEM.ADR (TEGetStylHandle));
  607.     Assign ("TEGetStyle", SYSTEM.ADR (TEGetStyle));
  608.     Assign ("TESetSelect", SYSTEM.ADR (TESetSelect));
  609.     Assign ("TEInsert", SYSTEM.ADR (TEInsert));
  610.     Assign ("TEDelete", SYSTEM.ADR (TEDelete));
  611.     Assign ("TESetStyle", SYSTEM.ADR (TESetStyle));
  612.     Assign ("TECut", SYSTEM.ADR (TECut));
  613.     Assign ("GetFontInfo", SYSTEM.ADR (GetFontInf));
  614.     Assign ("SetClip", SYSTEM.ADR (SetClip));
  615.     Assign ("DrawChar", SYSTEM.ADR (DrawChar));
  616.     Assign ("DrawText", SYSTEM.ADR (DrawText));
  617.     Assign ("TextFont", SYSTEM.ADR (TextFont));
  618.     Assign ("TextFace", SYSTEM.ADR (TextFace));
  619.     Assign ("TextMode", SYSTEM.ADR (TextMode));
  620.     Assign ("TextSize", SYSTEM.ADR (TextSize));
  621.     Assign ("LineTo", SYSTEM.ADR (LineTo));
  622.     Assign ("Line", SYSTEM.ADR (Lin));
  623.     Assign ("MoveTo", SYSTEM.ADR (MoveTo));
  624.     Assign ("PenMode", SYSTEM.ADR (PenMode));
  625.     Assign ("PenPat", SYSTEM.ADR (PenPat));
  626.     Assign ("PaintRect", SYSTEM.ADR (PaintRect));
  627.     Assign ("FrameOval", SYSTEM.ADR (FrameOval));
  628.     Assign ("CopyBits", SYSTEM.ADR (CopyBits));
  629.     Assign ("CopyBits", SYSTEM.ADR (CopyBits2));
  630.     Assign ("ForeColor", SYSTEM.ADR (ForeColor));
  631.     Assign ("PmForeColor", SYSTEM.ADR (PmForeColor));
  632.     Assign ("NewRgn", SYSTEM.ADR (NewRgn));
  633.     Assign ("InitGraf", SYSTEM.ADR (InitGraf));
  634.     Assign ("InitCursor", SYSTEM.ADR (InitCursor));
  635.     Assign ("CharWidth", SYSTEM.ADR (CharWidth));
  636.     Assign ("SetRectRgn", SYSTEM.ADR (SetRectRgn));
  637.     Assign ("AnimateEntry", SYSTEM.ADR (AnimateEntry));
  638.     Assign ("OpenPort", SYSTEM.ADR (OpenPort));
  639.     Assign ("RectRgn", SYSTEM.ADR (RectRgn));
  640.     Assign ("TextMode", SYSTEM.ADR (TextMode));
  641.     Assign ("PenMode", SYSTEM.ADR (PenMode));
  642.     Assign ("OpenCPort", SYSTEM.ADR (OpenCPort));
  643.     Assign ("CloseCPort", SYSTEM.ADR (CloseCPort));
  644.     Assign ("GetPalette", SYSTEM.ADR (GetPalette));
  645.     Assign ("SetPalette", SYSTEM.ADR (SetPalette));
  646.     Assign ("ActivatePalette", SYSTEM.ADR (ActivatePalette));
  647.     Assign ("GetNewPalette", SYSTEM.ADR (GetNewPalette));
  648.     Assign ("SetEntryColor", SYSTEM.ADR (SetEntryColor));
  649.     Assign("DisposePtr", SYSTEM.ADR (DisposePtr));
  650.     Assign("NewPtr", SYSTEM.ADR (NewPtr));
  651.     Assign("NewPtrClear", SYSTEM.ADR (NewPtrClear));
  652.     Assign("SetPtrSize", SYSTEM.ADR (SetPtrSize));
  653.     Assign ("HLock", SYSTEM.ADR (HLock));
  654.     Assign ("HUnlock",SYSTEM.ADR (HUnlock));
  655.     Assign ("MemError",SYSTEM.ADR (MemError));
  656.     Assign ("FreeMem",SYSTEM.ADR (FreeMem));
  657.     Assign ("MaxMem",SYSTEM.ADR (MaxMem));
  658.     Assign ("GetApplLimit",SYSTEM.ADR (GetApplLimit));
  659.     Assign ("SetApplLimit",SYSTEM.ADR (SetApplLimit));
  660.     Assign ("MaxApplZone",SYSTEM.ADR (MaxApplZone));
  661.     Assign ("StackSpace",SYSTEM.ADR (StackSpace));
  662.     Assign ("TopMem",SYSTEM.ADR (TopMem));
  663.     Assign ("NewHandle", SYSTEM.ADR (NewHandle));
  664.     Assign("GetKeys", SYSTEM.ADR (GetKeys));
  665.     Assign("DisposeRoutineDescriptor", SYSTEM.ADR (DisposeRoutineDesc));
  666.     Assign("NewRoutineDescriptor", SYSTEM.ADR (NewRoutineDesc));
  667.     Assign("VInstall", SYSTEM.ADR (VInstall));
  668.     Assign("InstallExceptionHandler", SYSTEM.ADR (InstallExcHandler));
  669.     Assign("ExitToShell", SYSTEM.ADR (ExitToShell));
  670. END Sys.
  671.